function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
/*
 * @Author: hc
 * @Date: 2024-03-18 15:58:15
 * @LastEditTime: 2024-03-28 09:55:26
 * @LastEditors: hc
 * @Description:
 */

import { useCallback, useMemo } from 'react';
import { AsyncTree, Tabs } from "../../../../functionalComponent";
import { Layout } from "../../../../util";
import { getExpressionFieldTree } from "../../service";
import FunctionCtx from "../functionCtx";
import { jsx as _jsx } from "react/jsx-runtime";
export default function (_ref) {
  var editor = _ref.editor,
    setCurrentFunc = _ref.setCurrentFunc,
    sendParams = _ref.sendParams;
  var getBizTreeMemo = useCallback(function () {
    return function () {
      return getExpressionFieldTree(sendParams);
    };
  }, [sendParams]);
  var onSelect = function onSelect(_, _ref2) {
    var _editor$current, _editor$current$inser;
    var node = _ref2.node;
    (_editor$current = editor.current) === null || _editor$current === void 0 || (_editor$current$inser = _editor$current.insertEdit) === null || _editor$current$inser === void 0 || _editor$current$inser.call(_editor$current, {
      text: node.expressionDisplay,
      type: 'field'
    });
  };
  var items = useMemo(function () {
    return [{
      key: '1',
      label: '函数',
      children: /*#__PURE__*/_jsx(FunctionCtx, {
        editor: editor,
        setCurrentFunc: setCurrentFunc
      })
    }, {
      key: '2',
      label: '字段',
      children: /*#__PURE__*/_jsx(Layout.Flex, {
        style: {
          flex: 1,
          height: '100%'
        },
        children: /*#__PURE__*/_jsx(AsyncTree, {
          virtual: false,
          request: getBizTreeMemo(),
          onSelect: onSelect,
          icon: false,
          convertNode: function convertNode(node) {
            return _objectSpread(_objectSpread({}, node), {}, {
              key: node.key,
              title: node.title,
              isLeaf: node.leaf
            });
          }
        })
      })
    }];
  }, [editor, getBizTreeMemo]);
  return /*#__PURE__*/_jsx(Tabs, {
    defaultActiveKey: "1",
    fitHeight: true,
    items: items
  });
}